package com.tencent50.easy;

/**
 * @author zhengTao
 * @version 1.0
 * @description: 买卖股票的最佳时机，最大前缀和变形，滑动窗口解决
 * @date 2022/7/24 14:47
 */
public class Demo10 {
    public static void main(String[] args) {
        int[] nums={0};
        int i = maxProfit(nums);
    }
    public static int maxProfit(int[] prices) {
        //如果天数小于1天，直接返回0
        if(prices.length<=1){
            return 0;
        }
        //记录一个数组，记录每一天相对于前一天的盈亏情况，小于0则为亏，大于0则为赚了
        int[] num=new int[prices.length-1];
        for (int i = 0; i < num.length; i++) {
            num[i]=prices[i+1]-prices[i];
        }
       //只需要求出 盈亏情况的最大和即可，如果最大值小于0，则0是最大值,及求最大子串和
        int[] profit=new int[num.length];

        int max=num[0];
        profit[0]=num[0];
        //滑动窗口基本模板
        for (int i = 1; i < profit.length; i++) {
            profit[i]=Math.max(profit[i-1]+num[i],num[i]);
            max=Math.max(profit[i],max);
        }
        return Math.max(max, 0);
    }
}
